Wireless communication (“wireless”) allows two or more electronic devices to exchange information without the need for a physical connection (i.e., a wire or cable) between the devices. Wireless can be fixed or mobile/portable. Fixed wireless allows wireless communication from one fixed location to another fixed location. Mobile/portable wireless permits communication from a fixed (central) site to a movable device while still maintaining wireless contact. The level of connectivity (i.e., the signal intensity) between two sites in a fixed wireless environment is fairly constant, because neither site ever moves. But the level of connectivity in mobile wireless may vary significantly depending on the location of the wireless device, the relative location of any mobile wireless communication transmitters and receivers, and any intervening obstacles such as trees, buildings, mountains, or other phenomena.
Mobile wireless devices (also referred to here as wireless devices or mobile devices) include pagers, mobile phones, and combination devices that include the functionality of mobile phones, pagers, and personal digital assistants (PDAs). These devices allow the exchange of textual information (e.g., using pagers, cell phones, or PDAs) as well voice and data (e.g., using cell phones and PDAs). Wireless devices have also recently been integrated with useful features such as global positioning system (GPS) access, cameras, and scanners (including scanners able to process radio frequency identification (RFID) and barcodes), and magnetic or optical data storage cards. These types of devices have enabled people to remain in contact with each other while traveling or working from multiple remote locations. Moreover, the richness of the information exchanged between people has grown considerably in recent years due to the expanding integration of features just described.
Mobile wireless devices generally communicate using electromagnetic waves such as radio waves. Transmitters send a signal from a wireless communication point-of-presence to a wireless device, while receivers process a signal received at a point-of-presence from a device. A point-of-presence is a collection of one or more transmitters and receivers that can communicate with a mobile wireless device. For example, a point-of-presence may be a communication tower in a cellular telephone network or a wireless local area network (LAN) connection at a coffee shop. A central site is in contact with a network of points-of-presence to control the communication between the device and the appropriate point of presence. Points-of-presence are typically spaced so that their receiving ranges overlap to allow continuous communication as a device moves amongst various locations. As long as a connection can be made between the point-of-presence and the mobile wireless device, information can be sent and received appropriate to the capabilities of the device. But in many environments such constant contact with a point-of-presence is not possible; since areas exist which are not in range of a point-of-presence, and variances of land and building materials may interfere with the signal. As a result, a pager can be out of range for a few minutes or hours, and mobile phone calls can be cut off in mid-sentence.
More recently, wireless devices have allowed application programs to be written to manage data communication (and not just voice) to and from the device so that more advanced functionality may be enabled in the device. Such applications can communicate with other devices, such as networked computers and other electronic equipment (including other wireless devices). Examples include the ability to send and receive email; retrieve, display and manage stock data; find and display nearby restaurants or clothing stores; and search and examine corporate data by workers located at customer sites. These applications typically rely on various application level protocols such as the Wireless Application Protocol (WAP) or NTT's I-MODE format, which provide a framework for the presentation and management of text, graphics, and other data on wireless devices. Alternatively, these applications rely upon an always-available Internet connection, and communicate using standard Internet protocols (for example, sockets and HTTP) and rely on the connection being available when needed.
Exemplary application protocols are built using data transport protocols such as ReFlex, CDPD, GPRS, and SMS. These protocols have allowed more sophisticated applications to be built, such as an interface for requesting a financial loan or placing an order with an office supply store. In these applications, interacting with the user and communicating data back to a central database system are necessary in order to request, collect, and process the information required to complete the task. For example, placing an order with an office supply store may require the customer name and number to be entered along with the specific items requested. The application sends this information to a central server where the order is received and verified, and data is returned to the application to inform the customer that the order has been approved and provide an expected delivery date.
Current protocols used in these sophisticated applications generally require continuous connectivity between the device and the network of mobile points of presence with which it communicates. Both the application protocols and the data transport protocols are stateless, and require connectivity with the device in order to complete a specific task such as sending an email message. This requirement means that a dense enough placement of wireless points of presence must exist so that the device can maintain a constant signal with at least one point-of-presence to function productively. A connection must be available (that is, a signal must be maintained) in order to complete any programmed task using the mobile device. If the signal is lost, the device may try to re-establish a connection in order to re-initiate the task, or the device may indicate that the task could not be accomplished. But in either event, productive data processing stops.
In some cases, the user has the option to manually re-initiate the task. This is successful only if the device can now communicate with a point of presence, or the user can move to a new location known to be within range of a point of presence. In the case where connectivity was lost because the mobile user is now in a location unreachable by a point-of-presence, the task cannot be re-initiated. Such a situation can occur in geographic areas that are in a valley or shielded by buildings or natural formations. More common is the loss of connectivity that often occurs inside a building. In most buildings, the wireless connectivity varies from room to room. The steel, concrete, and other materials within the structure of buildings can cause interference with wireless signals, as can the electronic noise generated from equipment within the building.
For applications such as requesting a weather forecast or the price of a specific stock, tasks can be defined in small enough sessions so that the connectivity requirement does not pose a significant problem: The task is short enough that a user is likely to complete it before losing connectivity, even if they are in an environment with intermittent connectivity. Furthermore, users of these devices often can wait to receive (or send) this information at a later time. But for more complex tasks, such as applying for billing authorization on behalf of a customer or recording work done on a copy machine being serviced, this requirement can be problematic for business use. Lost productivity due to poor connectivity can be especially frustrating if the mobile user is required to do an extended amount of work at a location where wireless communication is intermittent. For example, service technicians repairing large industrial equipment have been known to make trips outside of the building just to get a necessary piece of information with their mobile device.
In addition, wireless current protocols require that all information for a session be transmitted before the application can start processing the data, i.e., current protocols require monolithic delivery of code and data. For example, in WAP, information is sent in “decks” and split into logical sections called “cards”. Cards are described using an Extended Markup Language (XML) variant called Wireless Markup Language (WML). A WAP application must receive the entire deck (with all its cards) before data associated with the first card can be presented to the user. In practice, this means that WAP applications must limit the size of their decks to a manageable chunk of data so that the user is not left waiting for data to appear on their mobile device's display. Furthermore, current implementations of WAP set hard limits on how many characters can be sent in each deck. This limit is currently less than 2,000 characters, thus allowing only relatively small decks.
Wireless current devices may also require loading a different or customized wireless application program into the device before the application can be used. i.e. current wireless applications require the monolithic delivery of program instructions to the device. For example, in a Windows CE .NET application, the complete .NET assembly must be delivered to the wireless device and installed on that device before information for a session may be transmitted to the device. This limitation imposes configuration management and application installation burdens on the users and the IT staff that support them.
Because of these limitations imposed by current wireless protocols such as WAP, the burden of providing reliable, efficient data processing and transmission for wireless devices falls on the programmer who must anticipate the problems associated with loss of connectivity or the likely wait for a large block of data to download. But very often such consideration is not adequately given, due in part to the inexperience of many programmers with wireless applications and the tight release deadlines associated with many projects. Thus, programmers often break wireless application tasks into arbitrary steps that may not be optimized, or the user must cope with long data transmissions. Either situation makes the software inefficient for the user.
Businesses using wireless technologies have additional concerns related to a wireless device's susceptibility to loss, breakage, internal corruption, or unexpected failure as a result of their inherently unpredictable operating environment.
As a result, current wireless applications are often more difficult and time consuming to use than mobile users prefer and may fail in unexpected ways when executed in an area with intermittent connectivity. In some cases, the problems are severe enough to prevent mobile users from using their devices and applications at all.
The exemplary, illustrative non-limiting implementation of the technology herein is preferably provided using a hosted service provider (ASP) business module, in which wireless infrastructure, TPC device, and the various integration servers are provided by a central facility that is used by users on an as needed basis. Providing the technology in this manner allows the users to focus on their business and not on the deployment and management of infrastructure components. The nature of the architecture permits multiple users from different companies to transparently share common infrastructure without interfering with each other. Alternatively, the technology may be implemented in a traditional model, where a single company owns the infrastructure and provides access to said infrastructure for their people.
The exemplary illustrative technology herein addresses these and other important needs.
An exemplary illustrative non-limiting implementation of the technology herein provides a computer program code device, called a “node”, and corresponding apparatuses, systems, software, and methods, in which the node is configured to be transmitted from a first device for receipt and processing on a second, disparate device. The node comprises a collection of managed objects or managed object representations that are effective to control said disparate device. In one exemplary illustrative non-limiting implementation, the node is configured to control the processing of multiple data types. Examples of suitable data types include data encoding an image, signature information, data encoding sounds, data provided by a scanning device, data retrieved from a magnetic data storage mechanism, and GPS data. In other exemplary illustrative non-limiting implementations, the node is configured to control the processing of information to be sent to a printing device for printing.
In other exemplary illustrative non-limiting implementations, the node is configured to control the operation of another node in the disparate device. In one exemplary illustrative non-limiting implementation, the node is configured to execute a logical branch in the operation of a program operating in said disparate device. In a more specific exemplary illustrative non-limiting implementation, the logical branch is an IF operation. In another exemplary illustrative non-limiting implementation, the logical branch is a conditional branching operation.
In still other exemplary illustrative non-limiting implementations, the node is related logically to a plurality of nodes, and is configured to change to logical order of the plurality. In some exemplary illustrative non-limiting implementations, the node is configured to create a logical structure of computer program code devices. In other exemplary illustrative non-limiting implementations, the node is configured to instantiate a second node, cause the operation of an external program, or receive the results of the operation of an external program.
In other exemplary illustrative non-limiting implementations, the node is configured to specify at least one mechanism for its management. For example, the node can be encrypted, compressed, or protected from tampering. In addition, the management can include synchronization of the node between the first and second devices. In some exemplary illustrative non-limiting implementations, the synchronization occurs upon completion of the operation controlled by the node device or the completion of an operation of a second node. Alternatively, synchronization occurs at a predetermined interval.
The nodes provided by exemplary illustrative technology herein are configured to be received over a network connection, such as a wireless connection, by the disparate device. In some exemplary illustrative non-limiting implementations, the disparate device is a standard computer, such as a desktop or laptop computer. In other exemplary illustrative non-limiting implementations, the disparate device is a server.